package org.jeecg.common.modules.patient.service;

import org.jeecg.common.modules.patient.entity.Patient;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.modules.patient.vo.PatientReqVo;
import org.jeecg.common.modules.wx.entity.WxUserinfo;

import java.util.Collection;
import java.util.List;

/**
 * @Description: patient
 * @Author: jeecg-boot
 * @Date:   2020-08-19
 * @Version: V1.0
 */
public interface IPatientService extends IService<Patient> {

    /**
     * 获取指定区间的患者信息
     * @param start
     * @param end
     * @return
     */
    List<Patient> getBetweenInfo(Integer start,Integer end);

    /**
     * 初始化患者
     * @param userinfo
     * @return
     */
    Patient getOrCreatePatient(WxUserinfo userinfo);

    /**
     * 根据openid获取患者(仅限自己)
     * @param wxUserinfoId
     * @return
     */
    Patient getSelfByWxUserinfoId(String wxUserinfoId);

    /**
     * 根据id批量获取
     * @param ids
     * @return
     */
    List<Patient> getByIds(Collection<String> ids);

    /**
     * 根据用户id批量获取患者
     * @param id
     * @return
     */
    List<Patient> getByWxUserInfoId(String id);


    /**
     * 获取患者信息
     * @param name      患者姓名
     * @param nickname  昵称
     * @param mobile    手机号
     * @param dataStart 数据开始的记录数
     * @param pageSize  页面显示数据数
     * @return
     */
    List<PatientReqVo> getPatientInfos(String name, String nickname, String mobile, Integer dataStart, Integer pageSize);

    /**
     * 获取患者查询条件的数据总量
     * @param name      患者姓名
     * @param nickname  昵称
     * @param mobile    手机号
     * @return
     */
    int getCount(String name, String nickname, String mobile);

}
